/*
The code contained within this file is considered public domain, and
can be used for any purpose

libESM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(Not lgpl to allow you to mess arround with this)
*/

#ifndef __ESM_CONFIG_H_
#define __ESM_CONFIG_H_

///when deffed, data is also stored in a map as well as a list at the record level
#define ESM_STORE_IN_RECORD_MAP

///Possibly(!) Faster lookups for unique variables within subrecords
//#define ESM_STORE_IN_SUB_MAP


///Adds support for using std::cout <<
#define ESM_IOSTREAM


///USE boost::sharded_ptr for records
#define ESM_BOOST_PTR

/**
* define if you have the boost misc libs.
* Uses the boost function define to dump the function on errors
* otherwise it uses __FUNC__ or nothing
*/
#define ESM_BOOST_FUNCTION

/**
* 3 = does debug checks even when running in release mode
* 2 = normal. Has a lot of asserts in debug mode, but less in release mode
* 1 = does no checks in release mode. In debug mode, all checks are asserts. Doesn't throw any errors. Evar
*/
#define ESM_CHECKING_LEVEL 2

///Enalbe warnings. Warnings can indicate something bad, but are not in any way fatel
#define ESM_WARNINGS

///What happens on a warning. In this case, passes it to the error handler
#define ESM_ON_WARNING(exp, msg) ESM_CHECK_DEBUG(exp, msg)


#endif //__ESM_CONFIG_H_
